package com.nulldev.util.graphics.renderIt.api.core;

public interface RITVisual {

	static class RITVisualStub implements RITVisual {

		@Override
		public int getBitsForChannel(final RITVisualChannel channel) {
			switch (channel) {
				case RED:
				case GREEN:
				case BLUE:
					return 8;
				default:
					return 0;
			}
		}

		@Override
		public boolean hasRed() {
			return true;
		}

		@Override
		public boolean hasBlue() {
			return true;
		}

		@Override
		public boolean hasGreen() {
			return true;
		}

		@Override
		public boolean hasAlpha() {
			return false;
		}

		@Override
		public RITVisualPerformanceFlag getPerformanceFlag() {
			return RITVisualPerformanceFlag.NONE;
		}

	}

	public static final RITVisual STUB = new RITVisualStub();

	public static enum RITVisualChannel {
		RED,
		BLUE,
		GREEN,
		ALPHA
	}

	public static enum RITVisualPerformanceFlag {
		NONE,
		OPTIMIZED,
		SLOW,
		VERY_SLOW
	}

	public int getBitsForChannel(final RITVisualChannel channel);

	public boolean hasRed();

	public boolean hasBlue();

	public boolean hasGreen();

	public boolean hasAlpha();

	public RITVisualPerformanceFlag getPerformanceFlag();
}
